package com.heima.wemedia.service.impl;


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.heima.common.constants.WemediaConstants;
import com.heima.common.constants.WmNewsMessageConstants;
import com.heima.common.exception.CustomException;
import com.heima.model.common.dtos.PageResponseResult;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.common.enums.AppHttpCodeEnum;
import com.heima.model.wemedia.dtos.WmNewsAdminAuthDto;
import com.heima.model.wemedia.dtos.WmNewsDto;
import com.heima.model.wemedia.dtos.WmNewsPageReqDto;
import com.heima.model.wemedia.dtos.WmNewsScanPageDto;
import com.heima.model.wemedia.pojos.WmMaterial;
import com.heima.model.wemedia.pojos.WmNews;
import com.heima.model.wemedia.pojos.WmNewsMaterial;
import com.heima.model.wemedia.pojos.WmUser;
import com.heima.model.wemedia.vo.WmNewsVo;
import com.heima.utils.thread.WmThreadLocalUtils;
import com.heima.wemedia.mapper.WmMaterialMapper;
import com.heima.wemedia.mapper.WmNewsMapper;
import com.heima.wemedia.mapper.WmNewsMaterialMapper;
import com.heima.wemedia.service.WmNewsAutoScanService;
import com.heima.wemedia.service.WmNewsService;
import com.heima.wemedia.service.WmNewsTaskService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.*;
import java.util.stream.Collectors;

@Service
@Slf4j
@Transactional
public class WmNewsServiceImpl extends ServiceImpl<WmNewsMapper, WmNews> implements WmNewsService {

    @Autowired
    private WmNewsMaterialMapper wmNewsMaterialMapper;
    @Autowired
    private WmMaterialMapper wmMaterialMapper;
    @Autowired
    private WmNewsAutoScanService wmNewsAutoScanService;
    @Autowired
    private WmNewsTaskService wmNewsTaskService;
    @Autowired
    private KafkaTemplate<String, String> kafkaTemplate;
    @Autowired
    private WmNewsMapper wmNewsMapper;

    /**
     * 分页查询自媒体文章
     *
     * @param dto
     * @return
     */
    @Override
    public ResponseResult findList(WmNewsPageReqDto dto) {
        //参数校验：
        dto.checkParam();

        IPage page = new Page(dto.getPage(), dto.getSize());

        //构建查询条件
        LambdaQueryWrapper<WmNews> lwq = Wrappers.<WmNews>lambdaQuery()
                .eq(WmNews::getUserId, WmThreadLocalUtils.getUser().getId())
                .orderByDesc(WmNews::getPublishTime);
        //查询参数的校验
        //状态判断：
        if (dto.getStatus() != null) {
            lwq.eq(WmNews::getStatus, dto.getStatus());
        }
        //频道ID判断：
        if (dto.getChannelId() != null) {
            lwq.eq(WmNews::getChannelId, dto.getChannelId());
        }
        //时间判断：
        if (dto.getBeginPubDate() != null && dto.getEndPubDate() != null) {
            lwq.between(WmNews::getPublishTime, dto.getBeginPubDate(), dto.getEndPubDate());
        }
        //关键字模糊查询：
        if (dto.getKeyword() != null) {
            lwq.like(WmNews::getTitle, dto.getKeyword());
        }

        //待条件查询数据库：
        page = page(page, lwq);

        //返回数据：
        ResponseResult result = new PageResponseResult(dto.getPage(), dto.getSize(), (int) page.getTotal());
        result.setData(page.getRecords());
        result.setCode(200);
        return result;
    }

    /**
     * 发布文章
     *
     * @param dto
     * @return
     */
    @Override
    public ResponseResult submitNews(WmNewsDto dto) {
        if (dto == null || StringUtils.isEmpty(dto.getContent())) {
            return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);
        }

        //判断修改或新增文章
        WmNews wmNews = new WmNews();
        BeanUtils.copyProperties(dto, wmNews);
        if (dto.getImages() != null && dto.getImages().size() > 0) {
            String image = StringUtils.join(dto.getImages(), ",");
            wmNews.setImages(image);
        }
        if (wmNews.getType() == WemediaConstants.WM_NEWS_TYPE_AUTO) {
            wmNews.setType(null);
        }
        //判断新增或者删除
        saveOrUpDate(wmNews);

        //判断是否为草稿
        //是草稿：返回数据
        if (dto.getStatus() == 0) {
            return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
        }

        //不是草稿：保存文章内容图片与文章的关系
        //获取文章内容图片
        List<String> contentImagesUrl = getContentImages(dto);
        //保存关系：
        saveShip(contentImagesUrl, wmNews, WemediaConstants.WM_CONTENT_REFERENCE);

        //不是草稿：保存文章封面图片与文章的关系
        saveCorveShip(dto, wmNews, contentImagesUrl);

        //文章自动审核：
        //wmNewsAutoScanService.newAutoScan(wmNews.getId());

        //文章自动审核：延时任务：添加到延时任务中
        wmNewsTaskService.addNewsToTask(wmNews.getId(), wmNews.getPublishTime());

        return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
    }

    /**
     * 如果为自动：
     * 文章图片  >=3  多图
     * 文章图片  >=1 <3  丹徒
     * 文章图片  =0   无图
     * <p>
     * 保存封面图片与文章的关系
     *
     * @param dto
     * @param wmNews
     * @param contentImagesUrl
     */
    private void saveCorveShip(WmNewsDto dto, WmNews wmNews, List<String> contentImagesUrl) {
        List<String> images = dto.getImages();
        //设为自动：
        if (dto.getType() == WemediaConstants.WM_NEWS_TYPE_AUTO) {
            if (contentImagesUrl.size() >= 3) {
                wmNews.setType(WemediaConstants.WM_NEWS_MANY_IMAGE);
                //截取三个
                images = contentImagesUrl.stream().limit(3).collect(Collectors.toList());
            } else if (contentImagesUrl.size() >= 1 && contentImagesUrl.size() < 3) {
                wmNews.setType(WemediaConstants.WM_NEWS_SINGLE_IMAGE);
                images = contentImagesUrl.stream().limit(1).collect(Collectors.toList());
            } else {
                wmNews.setType(WemediaConstants.WM_NEWS_NONE_IMAGE);
            }
            //修改文章：
            if (images != null && images.size() > 0) {
                wmNews.setImages(StringUtils.join(images, ","));
            }
            updateById(wmNews);
        }
        //保存关系：
        saveShip(images, wmNews, WemediaConstants.WM_COVER_REFERENCE);

    }

    /**
     * 保存图片与文章的关系
     *
     * @param contentImagesUrl
     * @param wmNews
     * @param type
     */
    private void saveShip(List<String> contentImagesUrl, WmNews wmNews, Short type) {
        if (contentImagesUrl != null && contentImagesUrl.size() > 0) {
            //根据URL查询图片的ID
            List<WmMaterial> wmMaterials = wmMaterialMapper.selectList(Wrappers.<WmMaterial>lambdaQuery()
                    .in(WmMaterial::getUrl, contentImagesUrl));
            List<Integer> wmMaterialIds = wmMaterials.stream().map(WmMaterial::getId).collect(Collectors.toList());

            //路径与查询的图片ID数量不匹配：
            if (contentImagesUrl.size() != wmMaterialIds.size()) {
                throw new CustomException(AppHttpCodeEnum.PARAM_REQUIRE);
            }

            //保存关系：
            wmNewsMaterialMapper.saveRelationships(wmMaterialIds, wmNews.getId(), type);
        }
    }

    /**
     * 获取文章内容图片
     *
     * @param dto
     * @return
     */
    private List<String> getContentImages(WmNewsDto dto) {
        String content = dto.getContent();
        //获取JSON数组：
        JSONArray jsonArray = JSON.parseArray(content);

        List<String> imagesUrls = new ArrayList<>();
        //遍历：
        for (Object json : jsonArray) {
            //将JSON元素转为JsonObject
            JSONObject jsonObject = JSON.parseObject(json.toString());
            if (jsonObject.get("type").equals("image")) {
                imagesUrls.add((String) jsonObject.get("value"));
            }
        }
        return imagesUrls;
    }

    /**
     * 保存或修改文章：
     *
     * @param wmNews
     */
    private void saveOrUpDate(WmNews wmNews) {
        //补全字段
        wmNews.setUserId(WmThreadLocalUtils.getUser().getId());
        wmNews.setSubmitedTime(new Date());
        wmNews.setCreatedTime(new Date());
        wmNews.setEnable((short) 1);//默认为1 上架状态
        if (wmNews.getId() != null) {
            //修改：
            //删除图片素材与文章的关系
            wmNewsMaterialMapper.delete(Wrappers.<WmNewsMaterial>lambdaQuery()
                    .in(WmNewsMaterial::getNewsId, wmNews.getId()));
            updateById(wmNews);
        } else {
            //新增：
            save(wmNews);
        }
    }

    /**
     * 文章上下架
     * 使用 kafka 发送消息：
     *
     * @param dto
     * @return
     */
    @Override
    public ResponseResult downOrUp(WmNewsDto dto) {
        //校验参数：
        if (dto.getId() == null || dto.getEnable() == null || dto.getEnable() != (short) 0 && dto.getEnable() != (short) 1) {
            return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_REQUIRE);
        }

        //根据ID 查询文章是否存在：
        WmNews wmNews = getById(dto.getId());
        if (wmNews == null) {
            return ResponseResult.errorResult(AppHttpCodeEnum.DATA_NOT_EXIST);
        }

        //文章是否处于 已发表状态 ： 9
        if (wmNews.getStatus() != WmNews.Status.PUBLISHED.getCode()) {
            return ResponseResult.errorResult(AppHttpCodeEnum.NO_OPERATOR_AUTH, "文章未发布，不可上下架！");
        }

        //修改文章状态：
//        wmNews.setEnable(dto.getEnable());
//        updateById(wmNews);

        update(Wrappers.<WmNews>lambdaUpdate().eq(WmNews::getId, dto.getId())
                .set(WmNews::getEnable, dto.getEnable()));

        //向Kafka发送消息：
        Map map = new HashMap();
        map.put("articleId", wmNews.getArticleId());
        map.put("enable", dto.getEnable());
        //序列化成 JSON字符串后： 发送信息
        kafkaTemplate.send(WmNewsMessageConstants.WM_NEWS_UP_OR_DOWN_TOPIC, JSON.toJSONString(map));

        return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
    }

    /**
     * 人工审核：分页查询
     *
     * @param dto
     * @return
     */
    @Override
    public ResponseResult findAll(WmNewsScanPageDto dto) {
        /**
         //        //参数校验：
         //        dto.checkParam();
         //
         //        IPage page = new Page(dto.getPage(), dto.getSize());
         //
         //        //构建查询条件
         //        LambdaQueryWrapper<WmNews> lwq = Wrappers.<WmNews>lambdaQuery()
         //                .orderByDesc(WmNews::getPublishTime);
         //        //查询参数的校验
         //        //状态判断：
         //        if (dto.getStatus() != null) {
         //            lwq.eq(WmNews::getStatus, dto.getStatus());
         //        }
         //        //关键字模糊查询：
         //        if (dto.getTitle() != null) {
         //            lwq.like(WmNews::getTitle, dto.getTitle());
         //        }
         //
         //        lwq.eq(WmUser::getId,dto.get)
         //
         //        //待条件查询数据库：
         //        page = page(page, lwq);
         //
         //        //返回数据：
         //        ResponseResult result = new PageResponseResult(dto.getPage(), dto.getSize(), (int) page.getTotal());
         //        result.setData(page.getRecords());
         //        result.setCode(200);
         //        return result;
         */

        //多表查询：  使用mybatis

        //1.参数检查
        dto.checkParam();

        //记录当前页
        int currentPage = dto.getPage();

        //2.分页查询+count查询
        dto.setPage((dto.getPage() - 1) * dto.getSize());
        List<WmNewsVo> wmNewsVoList = wmNewsMapper.findListAndPage(dto);
        int count = wmNewsMapper.findListCount(dto);

        //3.结果返回
        ResponseResult responseResult = new PageResponseResult(currentPage, dto.getSize(), count);
        responseResult.setData(wmNewsVoList);
        return responseResult;


    }

    /**
     * 查询文章详情
     *
     * @param id
     * @return
     */
    @Override
    public ResponseResult findById(Integer id) {

        //校验参数:
        if (id == null) {
            return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_REQUIRE);
        }

        //根据ID查询文章
        WmNews wmNews = getById(id);
        //封面图片
        String images = wmNews.getImages();

        WmNewsDto dto = new WmNewsDto();
        BeanUtils.copyProperties(wmNews, dto);
        dto.setAuthorName("admin");

        //分娩图片根据 ， 分割
        List<String> imageList = Arrays.asList(images.split(","));
        dto.setImages(imageList);

        return ResponseResult.okResult(dto);
    }

    /**
     * 人工审核文章
     *
     * @param dto
     * @param status
     * @return
     */
    @Override
    public ResponseResult updateAuth(WmNewsAdminAuthDto dto, short status) {

        //检查参数
        if (dto == null || dto.getId() == null) {
            return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);
        }
        //查询文章信息
        WmNews wmNews = getById(dto.getId());
        if (wmNews == null) {
            return ResponseResult.errorResult(AppHttpCodeEnum.DATA_NOT_EXIST);
        }

        //修改文章的状态
        wmNews.setStatus(status);
        if (StringUtils.isNotBlank(dto.getMsg())) {
            wmNews.setReason(dto.getMsg());
        } else {
            wmNews.setReason("人工审核通过");
        }
        updateById(wmNews);


        //审核成功，则需要创建app端文章数据，并修改自媒体文章
        if (status == WmNews.Status.ADMIN_SUCCESS.getCode()) {
            //创建app端文章数据
            //在 service中 创建 saveAppArtile 对应 里面的 saveAppArtile 方法
            //调用方法 即可 跳过 自动审核的流程直接 生成 Ap端文章
            ResponseResult responseResult = wmNewsAutoScanService.saveAppArtile(wmNews);
            if (responseResult.getCode().equals(200)) {
                wmNews.setArticleId((Long) responseResult.getData());
                wmNews.setStatus(WmNews.Status.PUBLISHED.getCode());
                updateById(wmNews);
            }
        }

        return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
    }

/**
 //    /**
 //     * 人工审核失败：
 //     *
 //     * @param dto
 //     * @return
 //
 //    @Override
 //    public ResponseResult authFail(WmNewsAdminAuthDto dto) {
 //
 //        //参数校验：
 //        if (dto == null || dto.getId() == null) {
 //            return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_REQUIRE);
 //        }
 //
 //        WmNews wmNews = AdminAuth(dto.getId(), WmNews.Status.FAIL.getCode(), dto.getMsg());
 //
 //        //修改：
 //        updateById(wmNews);
 //
 //        return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
 //    }
 //
 //    /**
 //     * 人工审核成功
 //     *
 //     * @param dto
 //     * @return
 //
 //    @Override
 //    public ResponseResult authPass(WmNewsAdminAuthDto dto) {
 //        //参数校验：
 //        if (dto == null || dto.getId() == null) {
 //            return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_REQUIRE);
 //        }
 //        String msg = "人工审核通过";
 //        WmNews wmNews = AdminAuth(dto.getId(), WmNews.Status.ADMIN_SUCCESS.getCode(), msg);
 //        //修改：
 //        updateById(wmNews);
 //
 //        //同步到APP端
 //
 //        return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
 //    }
 //
 //    /**
 //     * 抽取人工审核 方法：
 //     *
 //     * @param status
 //     * @return
 //
 //    private WmNews AdminAuth(Integer id, Short status, String msg) {
 //        //根据ID查询：
 //        WmNews wmNews = getById(id);
 //        //修改状态
 //        wmNews.setReason(msg);
 //        wmNews.setStatus(status);
 //        return wmNews;
 //    }


 //    /**
 //     * 发布文章
 //     *
 //     * @param dto
 //     * @return
 //     *
 //    @Override
 //    public ResponseResult submitNews(WmNewsDto dto) {
 //        //参数校验:内容不能为空，或者 dto不能为空
 //        if (dto == null || StringUtils.isEmpty(dto.getContent())) {
 //            return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);
 //        }
 //
 //        //1：新增保存或者修改文章
 //        WmNews wmNews = new WmNews();
 //        //1.1：拷贝部分参数： 只有类型和属性名相同的可以拷贝:BeanUtils.copyProperties()
 //        BeanUtils.copyProperties(dto, wmNews);
 //        //1.2:处理类型不同的参数赋值：图片参数：StringUtils.join(),将集合数组转为字符串
 //        List<String> images = dto.getImages();
 //        if (images != null && images.size() > 0) {
 //            String imageStr = StringUtils.join(images, ",");
 //            wmNews.setImages(imageStr);
 //        }
 //        //1.3：当前图片类型为自动：type = -1 ，但是wmNews的type不能为 负数
 //        if (dto.getType().equals(WemediaConstants.WM_NEWS_TYPE_AUTO)) {
 //            wmNews.setType(null);
 //        }
 //        //1.4：调用保存或者修改文章方法：
 //        savaOrUpdate(wmNews);
 //
 //        //2：判断是否为草稿：
 //        //2.1：是草稿：结束当前方法
 //        if (dto.getStatus().equals(WmNews.Status.NORMAL.getCode())) {
 //            return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
 //        }
 //
 //        //2.2：不是草稿：保存内容的图片与素材的关系
 //        //获取文章内容中的图片：
 //        List<String> imagesUrl = getContentImage(dto);
 //        //保存内容图片与素材的关系:0
 //        saveRelationShip(imagesUrl, wmNews.getId(), WemediaConstants.CANCEL_COLLECT_MATERIAL);
 //
 //        //2.2：不是草稿：保存封面图片与素材的关系:为自动：从内容中获取进行数量比对
 //        savesaveRelationCover(dto, wmNews, imagesUrl);
 //
 //        return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
 //    }
 //
 //    /**
 //     * 若为自动：匹配规则：
 //     * 内容图片 >=1  <3 单图
 //     * 内容图片 >=   多图
 //     * 内容图片 无图  无图
 //     * 保存封面图片与素材的关系
 //     *
 //     * @param dto
 //     * @param wmNews
 //     * @param imagesUrl
 //     *
 //    private void savesaveRelationCover(WmNewsDto dto, WmNews wmNews, List<String> imagesUrl) {
 //        //获取文章封面图片
 //        List<String> images = dto.getImages();
 //        //封面类型为自动 ： type = -1
 //        if (dto.getType().equals(WemediaConstants.WM_NEWS_TYPE_AUTO)) {
 //            //文章内容图片 >=3，type = 3
 //            if (imagesUrl.size() >= 3) {
 //                //文章布局设置为多图文章：3
 //                wmNews.setType(WemediaConstants.WM_NEWS_MANY_IMAGE);
 //                //从内容中图片截取三张图片放在文章图片中： 集合转字符串：
 //                images = imagesUrl.stream().limit(3).collect(Collectors.toList());
 //            } else if (imagesUrl.size() < 3 && imagesUrl.size() >= 1) {
 //                //文章内容图片 >=1  <3，type = 1
 //                wmNews.setType(WemediaConstants.WM_NEWS_SINGLE_IMAGE);
 //                //从内容中图片截取一张图片放在文章图片中： 集合转字符串：
 //                images = imagesUrl.stream().limit(1).collect(Collectors.toList());
 //            } else {
 //                //文章内容图片  无图，type = 0
 //                wmNews.setType(WemediaConstants.WM_NEWS_NONE_IMAGE);
 //            }
 //            //修改文章：
 //            if (images != null && images.size() > 0) {
 //                //设置文章图片：集合转字符串 ，用 ， 分开
 //                wmNews.setImages(StringUtils.join(images, ","));
 //            }
 //            updateById(wmNews);
 //        }
 //        //保存封面图片与素材的关系  保存封面图片与文章的关系 ： 1
 //        if (images != null && images.size() > 0) {
 //            saveRelationShip(images, wmNews.getId(), WemediaConstants.WM_COVER_REFERENCE);
 //        }
 //    }
 //
 //    /**
 //     * 保存文章内容图片与素材的关系 ：
 //     *
 //     * @param imagesUrl
 //     * @param newsId
 //     * @param type
 //     *
 //    private void saveRelationShip(List<String> imagesUrl, Integer newsId, Short type) {
 //        //参数校验：
 //        if (imagesUrl != null && imagesUrl.size() > 0) {
 //            //根据URL查询图片的ID：
 //            List<WmMaterial> wmMaterials = wmMaterialMapper.selectList(Wrappers.<WmMaterial>lambdaQuery()
 //                    .in(WmMaterial::getUrl, imagesUrl));
 //
 //            //图片失效：有URL但是图片素材库中搜索不到：
 //            if (wmMaterials == null || wmMaterials.size() == 0) {
 //                //抛出异常：数据回滚
 //                throw new CustomException(AppHttpCodeEnum.DATA_NOT_EXIST);
 //            }
 //            //部分图片失效：URL的数量与查询到的ID不匹配：
 //            if (imagesUrl.size() != wmMaterials.size()) {
 //                //抛出异常：数据回滚
 //                throw new CustomException(AppHttpCodeEnum.DATA_NOT_EXIST);
 //            }
 //
 //            //将ID储存为集合：
 //            /**List wmMaterialIds = new ArrayList();
 //             for (WmMaterial wmMaterial : wmMaterials) {
 //             wmMaterialIds.add(wmMaterial.getId());
 //             }**
 //            //stream流：获取对象集合中的某个属性 封装成 集合
 //            List<Integer> wmMaterialIds = wmMaterials.stream().map(WmMaterial::getId).collect(Collectors.toList());
 //            //保存关系
 //            wmNewsMaterialMapper.saveRelationships(wmMaterialIds, newsId, type);
 //        }
 //    }
 //
 //    /**
 //     * 获取保存图片URL
 //     *
 //     * @param dto
 //     * @return
 //     *
 //    private List<String> getContentImage(WmNewsDto dto) {
 //        List<String> images = new ArrayList<>();
 //        //获取文章内容
 //        String content = dto.getContent();
 //
 //        //获取JSON数组：
 //        JSONArray jsonArray = JSON.parseArray(content);
 //        //遍历JSON数组
 //        for (Object json : jsonArray) {
 //            //json转为JSONObject
 //            JSONObject jsonObject = JSON.parseObject(json.toString());
 //            //获取 jsonObject 的 key 如果是image 则存入集合中
 //            if (jsonObject.get("type").equals("image")) {
 //                String imageUrl = jsonObject.get("value").toString();
 //                images.add(imageUrl);
 //            }
 //        }
 //
 //        /**
 //         //转为对象集合（数组）：
 //         List<Map> mapList = JSON.parseArray(content, Map.class);
 //
 //         for (Map map : mapList) {
 //         if (map.get("type").equals("image")) {
 //         images.add((String) map.get("value"));
 //         }
 //         }
 //         **
 //        return images;
 //    }
 //
 //    /**
 //     * 保存或者修改文章
 //     *
 //     * @param wmNews
 //     *
 //    private void savaOrUpdate(WmNews wmNews) {
 //        //补全字段：
 //        //userid
 //        wmNews.setUserId(WmThreadLocalUtils.getUser().getId());
 //        //创建时间，提交时间
 //        wmNews.setCreatedTime(new Date());
 //        wmNews.setSubmitedTime(new Date());
 //        //文章状态
 //        wmNews.setEnable((short) 1);//默认是上架状态
 //
 //        //判断时保存还是修改
 //        if (wmNews.getId() == null) {
 //            //文章ID不存在：新建文章保存
 //            save(wmNews);
 //        } else {
 //            //否则为修改： 修改前删除已关联的素材关系
 //            //删除关系：
 //            wmNewsMaterialMapper.delete(Wrappers.<WmNewsMaterial>lambdaQuery()
 //                    .eq(WmNewsMaterial::getNewsId, wmNews.getId()));
 //            //修改：
 //            updateById(wmNews);
 //        }
 //    }
 */
}
